/**
 * 版权所有 (C), 2019-2019, XXX有限公司
 * 项目名：com.company.study.designpatterns.singleton
 * 文件名: Singleton3
 * 日期: 2019/6/15 8:40
 * 说明:
 */
package com.company.study.designpatterns.singleton;

/**
 * 双重检查
 *
 * @author Administrator
 * @create 2019/6/15
 * @since 0.0.1
 */
public class Singleton3 {
    //声明一个私有的静态变量，使用volatile修饰
    private static volatile Singleton3 singleton;

    /**
     * 构造方式私有化，保证在外部无法通过new来创建对象
     */
    private Singleton3() {
    }

    /**
     * 提供一个static方法来获取当前实例
     *
     * @return
     */
    public static Singleton3 getInstance() {
        if (singleton == null) {
            synchronized (Singleton3.class) {
                if (singleton == null) {
                    singleton = new Singleton3();
                }
            }
        }
        return singleton;
    }
}